
// 转义序列起始符
#define ESC "\033["

// 重置所有样式
#define RESET_ALL ESC "0m"

// 清屏序列：清屏并光标归位
#define CLEAR_SCREEN ESC "2J" ESC "H"

// 清除从光标到行尾
#define CLEAR_TO_LINE_END ESC "K"
// 清除从光标到行首
#define CLEAR_TO_LINE_START ESC "1K"
// 清除整行
#define CLEAR_LINE ESC "2K"

// 光标可见性
#define CURSOR_HIDE ESC "?25l"
#define CURSOR_SHOW ESC "?25h"

// 光标位置管理
#define CURSOR_SAVE ESC "s"    // 保存光标位置
#define CURSOR_RESTORE ESC "u" // 恢复光标位置
#define CURSOR_HOME ESC "H"    // 光标移动到左上角 (1,1)

// 常用颜色宏定义 - 前景色
#define FG_BLACK ESC "30m"
#define FG_RED ESC "31m"
#define FG_GREEN ESC "32m"
#define FG_YELLOW ESC "33m"
#define FG_BLUE ESC "34m"
#define FG_MAGENTA ESC "35m"
#define FG_CYAN ESC "36m"
#define FG_WHITE ESC "37m"
#define FG_DEFAULT ESC "39m"

// 常用颜色宏定义 - 背景色
#define BG_BLACK ESC "40m"
#define BG_RED ESC "41m"
#define BG_GREEN ESC "42m"
#define BG_YELLOW ESC "43m"
#define BG_BLUE ESC "44m"
#define BG_MAGENTA ESC "45m"
#define BG_CYAN ESC "46m"
#define BG_WHITE ESC "47m"
#define BG_DEFAULT ESC "49m"

// 文本样式
#define TEXT_BOLD ESC "1m"
#define TEXT_DIM ESC "2m"
#define TEXT_ITALIC ESC "3m"   // 并非所有终端都支持
#define TEXT_UNDERLINE ESC "4m"
#define TEXT_BLINK ESC "5m"    // 并非所有终端都支持
#define TEXT_INVERT ESC "7m"   // 反色显示（前景背景互换）
#define TEXT_HIDDEN ESC "8m"   // 隐藏文本（如密码输入）

// 函数声明
void clear_screen(void);
void clear_line(void);
void cursor_home(void);
void cursor_hide(void);
void cursor_show(void);
void cursor_save(void);
void cursor_restore(void);
void set_cursor_position(int row, int col);
void move_cursor_up(int n);
void move_cursor_down(int n);
void move_cursor_forward(int n);
void move_cursor_back(int n);
